package org.yelongframework.qrcode;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 二维码工具
 * 
 * @since 1.0.0
 */
public interface QRCodeTools {

	/**
	 * 生成二维码
	 * 
	 * @param content          二维码内容
	 * @param qrCodeProperties 二维码属性
	 * @param outputStream     二维码输出到的流
	 * @return 二维码输出到的流
	 * @throws IOException 流异常
	 */
	OutputStream encode(String content, QRCodeProperties qrCodeProperties, OutputStream outputStream)
			throws IOException;

	/**
	 * 解密二维码 获取二维码的内容
	 * 
	 * @param filepath 二维码图片文件路径
	 * @return 二维码的内容
	 * @throws IOException 流异常
	 */
	default String decodeReturnString(String filepath) throws IOException {
		return decodeReturnString(new File(filepath));
	}

	/**
	 * 解密二维码 获取二维码的内容
	 * 
	 * @param file 二维码图片文件
	 * @return 二维码的内容
	 * @throws IOException 流异常
	 */
	default String decodeReturnString(File file) throws IOException {
		return decodeReturnString(new FileInputStream(file));
	}

	/**
	 * 解密二维码 获取二维码的内容
	 * 
	 * @param inputStream 二维码图片的流
	 * @return 二维码的内容
	 * @throws IOException 流异常
	 */
	String decodeReturnString(InputStream inputStream) throws IOException;

}
